#ifndef OPENCVWIDGET_H
#define OPENCVWIDGET_H

#include <QWidget>
#include <QPixmap>
#include <QLabel>
#include <QVBoxLayout>
#include <QImage>
#include <QUrl>
#include <QDebug>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/gpu/gpu.hpp>


#include <featurestracker.h>

class OpenCvWidget : public QWidget
{
    Q_OBJECT

public:
    OpenCvWidget(QWidget *parent = 0);
    ~OpenCvWidget(void);

  void putFrame (cv::Mat imagem);
  void clearFrame ();
  bool initCaptureFromCam();

  //Classe que coloca os pontos de controle e os rastreia
 featuresTracker tracker;

    bool showingVideo;



protected:
void timerEvent(QTimerEvent*); // Processa eventos em tempos regulares


private:
  //mostrar imagem na ui
  QLabel *m_imageLabel;
  QVBoxLayout *m_layout;
  QImage m_image;

  cv::Mat imagem;
  cv::VideoCapture camera; // Representa o dispositivo de captura de video


  //variaveis de controle
  int  videoTimerId;


// Funcoes de conversao opencv <-> qt

  cv::Mat qImage2Mat(const QImage& qImg);
  QImage mat2QImage(const cv::Mat mat);
    
};

#endif // OPENCVWIDGET_H
